TÉCNICAS PARA DISMINUIR LOS TIEMPOS DE ACIERTO


Los tiempos de acceso a la memoria cache son importantes porque afectan directamente al ciclo de reloj.


Caches pequeñas y simples.


Como ya se sabe, Cuanto más simple y pequeño el hardware es más rápido. Esto también ayuda a que se puedan incluir en el chip. En cuanto a la simplicidad, los emplazamientos directos (que son los más sencillos de implementar) además permiten solapar la comprobación de la etiqueta con la transmisión del dato.


Caches virtuales


Se tratan en el tema de memoria virtual.


Segmentación de la escritura para hacer los aciertos de escritura más rápidos.


La escritura habitualmente lleva más tiempo que la lectura porque no se puede realizar en paralelo la comprobación de la etiqueta y la escritura del dato porque se corre el peligro de escribir sobre una dirección errónea.


Una técnica que puede evitar este problema es la segmentación de la escritura. Conceptualmente es similar al rob, se trata de impedir que se escriba sobre una dirección de memoria errónea. Para evitarlo se coloca un buffer llamado de escritura retardada entre la caché de datos y la unidad de proceso. Con esto se consigue segmentar la escritura en dos etapas. Por otro lado la cache se diseña de manera que los datos y las etiquetas puedan ser accedidas independientemente y en paralelo.


En una escritura la cache compara la etiqueta con la dirección de escritura, mientras en paralelo accede al dato. Al final del ciclo se carga la dirección y el dato en el buffer de escritura retardada. Si el resultado de la comparación de la etiqueta ha sido un acierto, en el siguiente ciclo se finaliza la escritura. En caso contrario se suspende la escritura en memoria y se activa el proceso de fallo de escritura.


En la figura aparecen también los camino de lectura de la cache, por eso hay un mux de direcciones a la entrada de la cache de datos, una de lectura y otra de escritura. También aparece el camino para el caso de que el procesador quiera leer un dato que se encuentra en el buffer de escritura retrasada, en este caso se comprueba el tag almacenado en el buffer de escritura retardada con el de la dirección de lectura y si coinciden se envía el dato del buffer retardado a la cpu




Ejemplo de jerarquía de memoria.